home *** CD-ROM | disk | FTP | other *** search
/ 100 Plus Great Games 2 / 100PLUSV2.BIN / games / SimpleFaro.dxr / Internal_1_deck of cards.ls < prev    next >
Encoding:
Text File  |  2002-01-25  |  2.0 KB  |  86 lines

  1. property pNumberOfCards, pCards
  2.  
  3. on new me
  4.   pCards = mInitDeck()
  5.   mShuffle()
  6.   pNumberOfCards = me.mCountCards()
  7.   return me
  8. end
  9.  
  10. on mInitDeck me
  11.   deck = []
  12.   repeat with rank in [#ace, #two, #three, #four, #five, #six, #seven, #eight, #nine, #ten, #jack, #queen, #king]
  13.     repeat with suit in [#hearts, #diamonds, #clubs, #spades]
  14.       deck.add(mInitCard(me, rank, suit))
  15.     end repeat
  16.   end repeat
  17.   return deck
  18. end
  19.  
  20. on mInitCard me, arank, asuit
  21.   return new(script("card"), arank, asuit)
  22. end
  23.  
  24. on mShuffle me
  25.   unshuffledCards = pCards.duplicate()
  26.   shuffledCards = []
  27.   the randomSeed = (random(the ticks) + random(the ticks)) * random(the ticks) / random(100)
  28.   repeat while unshuffledCards.count > 0
  29.     tempVar = unshuffledCards[random(unshuffledCards.count)]
  30.     shuffledCards.add(tempVar)
  31.     unshuffledCards.deleteOne(tempVar)
  32.   end repeat
  33.   pCards = shuffledCards
  34. end
  35.  
  36. on mCountCards me
  37.   return pCards.count
  38. end
  39.  
  40. on mDrawCard me, fromWhere
  41.   if not voidp(fromWhere) then
  42.     if ilk(fromWhere, #symbol) then
  43.       if fromWhere = #top then
  44.         return pCards[1]
  45.       else
  46.         if fromWhere = #random then
  47.           the randomSeed = (random(the ticks) + random(the ticks)) * random(the ticks) / random(100)
  48.           return pCards[random(pCards.count)]
  49.         else
  50.           if fromWhere = #bottom then
  51.             return pCards[pCards.count]
  52.           end if
  53.         end if
  54.       end if
  55.     else
  56.       if ilk(fromWhere, #integer) then
  57.         if (fromWhere > 0) and (fromWhere <= pCards.count) then
  58.           return pCards[fromWhere]
  59.         else
  60.           alert("Out of Range")
  61.         end if
  62.       end if
  63.     end if
  64.   else
  65.     alert("wrong data type")
  66.   end if
  67. end
  68.  
  69. on mRemoveFromDeck me, cardToRemove
  70.   if ilk(cardToRemove, #object) then
  71.     pCards.deleteOne(cardToRemove)
  72.   else
  73.     if ilk(cardToRemove, #integer) then
  74.       pCards.deleteAt(cardToRemove)
  75.     end if
  76.   end if
  77. end
  78.  
  79. on mAddCardToDeck me, cardToAdd
  80.   pCards.add(cardToAdd)
  81. end
  82.  
  83. on mGetPosInDeck me, cardToFindPos
  84.   return pCards.findPos(cardToFindPos)
  85. end
  86.